# -*- coding: utf-8 -*-
# @Author  : zhang
# @Time ： 2024/5/23 9:37
import os


def rename_images_with_extension(folder_path):
    """
    重命名文件夹中的图片文件，保留原始扩展名，并按顺序编号

    参数:
        folder_path (str): 包含图片的文件夹路径
    """
    # 支持的图片文件扩展名
    image_extensions = ('.png', '.jpg', '.jpeg', '.bmp', '.gif', '.tiff', '.txt')

    # 获取文件夹中所有文件的列表
    try:
        files = os.listdir(folder_path)
    except FileNotFoundError:
        print(f"错误：文件夹 '{folder_path}' 不存在")
        return
    except PermissionError:
        print(f"错误：没有权限访问文件夹 '{folder_path}'")
        return

    # 过滤出图片文件
    image_files = [f for f in files if f.lower().endswith(image_extensions)]

    if not image_files:
        print(f"警告：在文件夹 '{folder_path}' 中没有找到图片文件")
        return

    # 初始化计数器
    counter = 0
    original_num = counter

    # 遍历图片文件并重命名
    for file in image_files:
        # 获取文件扩展名
        _, ext = os.path.splitext(file)
        ext = ext.lower()  # 统一转为小写

        # 生成新的文件名，格式为0000.ext, 0001.ext, ...
        new_name = f"{counter:04d}{ext}"

        # 构建原始文件和新文件的完整路径
        old_file = os.path.join(folder_path, file)
        new_file = os.path.join(folder_path, new_name)

        # 检查新文件名是否已存在
        if os.path.exists(new_file):
            print(f"警告：跳过文件 '{file}'，因为 '{new_name}' 已存在")
            continue

        try:
            # 重命名文件
            os.rename(old_file, new_file)
            counter += 1
        except OSError as e:
            print(f"错误：无法重命名 '{file}' 为 '{new_name}': {e}")

    print(f"完成！共重命名了 {counter-original_num} 个文件。")

if __name__ == "__main__":
    folder_path = 'images_enhancement'
    rename_images_with_extension(folder_path)
